In a typical distributed computing environment, a client calls an application server with a request by sending a HTTP request from a web browser. The application server has a “master service” which receives the request, and assigns the request to be executed on a back-end server. The back-end server may be a “virtual machine” comprising a cluster of back end servers. An example of a master service is IBM's WebSphere®. The virtual machine is any physical or logical computer capable of executing the request. The master service attempts to distribute the workload across the “cluster” of back-end virtual machines in an efficient way. An efficient distribution prevents backlogs and improves response time.
A client request often requires a service. A service is a software application that performs a data manipulation to produce a response to the request. For example, a service could be a database query or a mathematical calculation. Often, a service performs a series of data manipulations. When a request is assigned to a virtual machine, the service required for execution of the request is loaded on the assigned virtual machine.
Services ideally are written to execute properly on a distributed environment. These robust, or “cluster friendly” services can be broken down into fragments, and each fragment can run on a different virtual machine and still produce a consistent, correct result. The ability to execute a service across a cluster enhances the ability of the master service to efficiently distribute the workload across the cluster. Developers generally follow good coding conventions and properly test their code prior to implementation to ensure that services are cluster friendly.
Sometimes, services are not “cluster friendly.” Non-cluster friendly services will not execute properly if distributed across multiple virtual machines. Non-cluster friendly services may have run-time errors by violating security rules or by not propagating context needed to execute sequential steps or fragments. Distributing the execution of a service that is not cluster friendly may cause an incorrect response to a client request. Incorrect responses to a request may have other consequences such as dissatisfied customers or poor business decisions made on incorrect data.
A need exists for a way to prevent a non-cluster friendly service from being distributed across a cluster.